Frame interpolation creates an image frame from neighboring images. The neighboring images may be fields in an interlaced video format, used to form a frame of data, or neighboring frames of a soon-to-be-created frame.
In the simplest approach, one could increase the frame rate by repeating the most recent frame until the next frame is ready for display. However, this does not account for moving objects which may appear to jump from frame to frame and have flickering artifacts.
Motion estimation and motion compensation techniques may alleviate some of these issues. These techniques rely upon motion vectors to shift the image data for the moving object to the correct position in interpolated frames, thereby compensating for the motion of the object. Difficulties arise in the estimation of motion and the selection of the correct motion vector in the regions of the image where the moving object resides. These regions may have background areas that are initially uncovered in the background, but become covered by the object in motion. Similarly, these background regions may be initially covered by the object, and then become uncovered as the object moves away. For purposes of this discussion, these regions will be referred to as uncover/cover regions. In either case, selection of motion vectors becomes difficult.
Motion estimation and motion compensation techniques typically segment the frame into blocks. The techniques employ motion vectors for each block, so they must select a motion vector. The selection of motion vector is generally between the motion vector of the background region or of the object. When an algorithm must make a selection between these two motion vectors, regions may exist for which the algorithm may not have a clear choice. Typically, the algorithm will select the background motion vector as a default. In some instances, the process may use the global motion vector instead of the background motion vector because the global motion vector typically closely matches the background motion vector.
Current techniques typically average the motion vectors for the whole frame, meaning averaging the motion vectors from each block. Alternatively, they use the most common motion vector among the block motion vectors. In either case, the motion vectors are close to the correct motion vector, but not as accurate as they could be. Further, it is not possible to provide a sub pixel accurate estimate.